package com.baseballgame.server;

import java.net.ServerSocket;
import java.net.Socket;

/**
 * 상호참조가 되는 형태이므로 (private ServerChatFrame frame) 올바르진 않다.
 * 조심히 만들어야 함
 * listing & accept 클래스
 */
public class ListeningThread extends Thread {

	private ServerSocket listener;
	private ServerChatFrame frame;
	private boolean running;
	
	public ListeningThread(ServerChatFrame frame) {
		running = false;
		this.frame = frame;
		try{
			//소켓생성 + IP, Port 할당 + Backlog 설정(Accept)
			listener = new ServerSocket(9999, 100);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	@Override
	public void run(){
		//연결 요청 수신
		running = true;
		while(running){
			try{
				Socket socket =  listener.accept();
				
				//frame에 연결된 소켓정보를 전달
				frame.addClient(socket);
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
	
	//쓰레드를 중지하는 메서드(쓰레드는 강제로 멈추게 하지 않는다.)
	public void doStop(){
		running = false;
		try{
			listener.close();
		}catch(Exception e){}
	}
}
